export default {
  //在后端数据库中注册一个新的教练，并更新 Vuex store 中的状态以反映这次注册的结果。
  async registerCoach(context, data) {
    const userId = context.rootGetters.userId;
    const coachData = {
      //id: context.rootGetters.userId,
      firstName: data.first,
      lastName: data.last,
      description: data.desc,
      hourlyRate: data.rate,
      areas: data.areas
    };
    // 使用 `fetch` API 向 Firebase Realtime Database 发送 PUT 请求来更新或创建教练的数据。
    //URL 中包含了用户 ID，确保数据被保存到正确的位置。
    const response =await fetch(`https://coach2-db901-default-rtdb.firebaseio.com/coaches/${userId}.json`,
    {
       
        method:'PUT',
        body:JSON.stringify(coachData)
    });

    //const responseData = await response.json();
    if(!response.ok){
      //error...
    }

    context.commit('registerCoach', {
      ...coachData,
      id:userId
    });
  },
  async loadCoaches(context)
  {
    //从服务器端读取coaches的信息
     const response = await fetch(
      `https://coach2-db901-default-rtdb.firebaseio.com/coaches.json`);
      //把读取的信息转化为json格式
     const responseData = await response.json();
     //如果没有成功读取服务端数据，比如网突然断了
     if(!response.ok){
       const error = new Error(responseData.message || 'Failed to fetch');
       throw error;
     }

     const coaches = [];
     //把从服务端获取的数据responsData转存到本地的coaches数组中
     for(const key in responseData)
     {
        const coach = {
          id:key,//key as coachId
          firstName: responseData[key].firstName,
          lastName: responseData[key].lastName,
          description: responseData[key].description,
          hourlyRate: responseData[key].hourlyRate,
          areas: responseData[key].areas
        };
        coaches.push(coach);//把每个coach信息存入到 coaches数组中
     }
     //当所有的教练信息都被添加到 `coaches` 数组后，使用 `context.commit` 提交一个 mutation（假设名为 `setCoaches`），
     //将整个 `coaches` 数组提交给 mutation。这通常会更新 Vuex store 中的状态，以反映从服务器获取的教练列表
     context.commit('setCoaches',coaches);
  }

};